package Interfaces;

import java.io.File;

import DataModel.Feature;
import DataModel.FeatureHolder;
import DataModel.LociHolder;

/**
 * This class represents a track in GeneScapes. All loaded data either {@link LociHolder} or {@link FeatureHolder}
 * are implementing this interface.
 * 
 * @author  Stefan Lorenz
 * <br>  <br>16.11.2012
 */
public interface Track {
    /**
     * Returns the type of the data defined by the file format of the parsed file
     * @return the type of file
     */
    String getTypeOfFile();
    
    /**
     * Returns the name of the track which is the name of the file which is parsed
     * @return the name of the file
     */
    String getName();
    
    /**
     * Returns the number elements in this track
     * @return the number of elements
     */
    int getElementsOfTrack();
    
    /**
     * Returns the file which is parsed and where the data comes from
     * @return the file of the data
     */
    File getFile();
    
    /**
     * Returns the size of the genomic locus or the most right stop position of a {@link Feature}
     * @return the size of the track
     */
    int getSize();
    
    /**
     * Sets the track index to features 
     * @param index of track
     */
    void setTrackIndexToFeatures(int index);
    
}
